/*
 * Copyright (C) 2000-2008 Jens Nixdorf and various contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies of the Software, its documentation and marketing & publicity
 * materials, and acknowledgment shall be given in the documentation, materials
 * and software packages that this Software was used.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package org.mopore.jat.core.dashboard;

import java.awt.Font;
import java.awt.GridLayout;
import java.util.LinkedList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;

import org.mopore.jat.gui.wizard.AbstractWizardPage;
import org.mopore.jat.gui.wizard.ButtonPanel;

public class MainPage extends AbstractWizardPage<DashboardWizardInfo> {
	
	
	private List<DashboardInfo> noEntriesList;


	@Override
	public JPanel getContentPanel(){
		
		ButtonPanel buttonPanel = getButtonPanel();
		buttonPanel.enableFinishButton();
		
		JPanel panel = new JPanel();
		GridLayout gridLayout = new GridLayout( 3, 1 );
		panel.setLayout( gridLayout );
		
		DashboardWizardInfo info = context().get();
		List<DashboardInfo> list = info.getInfoList();
		
		if ( list.size() == 0 ) {
			list = noEntriesList();
		}
		
		int count = 0;
		for (DashboardInfo dashboardInfo : list) {
			JPanel infoPanel = createInfoPanel( dashboardInfo );
			panel.add( infoPanel );
			if ( ++count == 3) {
				break;
			}
		}
		
		Border emptyBorder = BorderFactory.createEmptyBorder( 5, 5, 5, 5 );
		panel.setBorder( emptyBorder );
		
		
		return panel;
	}


	/**
	 * @return
	 */
	private List<DashboardInfo> noEntriesList() {
		
		if ( noEntriesList == null ) {
			noEntriesList = new LinkedList<DashboardInfo>();
			DashboardInfo info = new DashboardInfo();
			info.setTitle( "No entries present" );
			noEntriesList.add( info );
		}
		
		return noEntriesList;
	}
	


	/**
	 * @param dashboardInfo
	 * @return
	 */
	private JPanel createInfoPanel( DashboardInfo info ) {
		
		Border border = BorderFactory.createTitledBorder( (String)null );
		JPanel panel = new JPanel();
		panel.setLayout( null );
		panel.setSize( 300, 50 );
		panel.setBorder( border );
		
		JLabel titleLabel = new JLabel( info.getTitle() );
		Font titelFont = titleLabel.getFont();
		titelFont = titelFont.deriveFont( Font.BOLD );
		titleLabel.setFont( titelFont );
		titleLabel.setBounds( 3, 5, 300, 20 );
		panel.add( titleLabel );
		
		JLabel textLabel = new JLabel( info.getText() );
		textLabel.setBounds( 3, 25, 300, 27 );
		panel.add( textLabel );
		
		return panel;
	}


	@Override
	public void storeToContext() {
		// only text info at this page
	}
	

	

}
